// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package qunar.tc.decompiler.modules.decompiler.sforms;

import qunar.tc.decompiler.modules.decompiler.exps.Exprent;
import qunar.tc.decompiler.modules.decompiler.stats.BasicBlockStatement;
import qunar.tc.decompiler.modules.decompiler.stats.Statement;

import java.util.ArrayList;
import java.util.List;


public class DirectNode {

    public static final int NODE_DIRECT = 1;
    public static final int NODE_TAIL = 2;
    public static final int NODE_INIT = 3;
    public static final int NODE_CONDITION = 4;
    public static final int NODE_INCREMENT = 5;
    public static final int NODE_TRY = 6;

    public final int type;

    public final String id;

    public BasicBlockStatement block;

    public final Statement statement;

    public List<Exprent> exprents = new ArrayList<>();

    public final List<DirectNode> succs = new ArrayList<>();

    public final List<DirectNode> preds = new ArrayList<>();

    public DirectNode(int type, Statement statement, String id) {
        this.type = type;
        this.statement = statement;
        this.id = id;
    }

    public DirectNode(int type, Statement statement, BasicBlockStatement block) {
        this.type = type;
        this.statement = statement;

        this.id = block.id.toString();
        this.block = block;
    }

    @Override
    public String toString() {
        return id;
    }
}
